나의 말:
ChatGPT의 말:
C++Builder의 **이벤트(Event)**는 VCL 컴포넌트에서 특정 동작이 발생했을 때 자동으로 호출되는 함수입니다. 예를 들어 버튼을 클릭하면
OnClick이벤트가 발생합니다.자주 사용하는 C++Builder 이벤트
이벤트 발생 시점 주 용도 OnClick버튼 등을 클릭 버튼 동작 처리 OnDblClick더블클릭 더블클릭 처리 OnCreateForm/객체 생성 시 초기화 OnShowForm이 화면에 표시될 때 화면 표시 직전/직후 작업 OnCloseForm을 닫을 때 종료 처리, 닫기 여부 결정 OnDestroyForm/객체가 소멸할 때 메모리/객체 정리 OnActivateForm이 활성화될 때 활성화 시 처리 OnDeactivateForm이 비활성화될 때 비활성화 시 처리 OnEnter컨트롤이 포커스를 얻을 때 입력 시작 처리 OnExit컨트롤이 포커스를 잃을 때 입력 검증 OnKeyDown키를 누를 때 키 입력 처리 OnKeyUp키를 뗄 때 키 해제 처리 OnKeyPress문자 키 입력 문자 입력 처리 OnMouseDown마우스 버튼을 누를 때 마우스 입력 OnMouseUp마우스 버튼을 뗄 때 마우스 입력 OnMouseMove마우스 이동 마우스 위치 처리 OnPaint화면을 그릴 때 직접 그리기 OnResize크기가 변경될 때 크기 변경 대응 OnChange값/내용이 변경될 때 Edit, ComboBox 등의 값 변경 OnTimerTimer 주기마다 주기적 작업 C++Builder의 VCL에는 이런 이벤트가 컴포넌트별로 제공되며, Object Inspector → Events 탭에서 연결할 수 있습니다.
1. OnClick 예제
TButton을 폼에 올리고 더블클릭하면 C++Builder가 이벤트 핸들러를 만들어 줍니다.void __fastcall TForm1::Button1Click(TObject *Sender) { ShowMessage("버튼을 클릭했습니다."); }여기서
TObject *Sender는 이 이벤트를 발생시킨 객체입니다.
예를 들어 여러 버튼이 같은 이벤트를 사용할 수도 있습니다.
void __fastcall TForm1::ButtonClick(TObject *Sender) { TButton *Btn = dynamic_cast<TButton*>(Sender); if (Btn) ShowMessage(Btn->Caption); }버튼마다 별도의 이벤트 함수를 만들지 않고 하나의 함수에서 처리할 수 있습니다.
2. Form 이벤트
폼에서는 다음 이벤트가 특히 중요합니다.
OnCreate ↓ OnShow ↓ OnActivate ↓ OnPaint폼이 생성되고 바로 표시되는 경우 이러한 순서로 이벤트가 발생할 수 있습니다.
예:
void __fastcall TForm1::FormShow(TObject *Sender) { Label1->Caption = "프로그램이 시작되었습니다."; }OnCreate 주의
C++Builder에서는
OnCreate보다 폼 생성자를 직접 사용하는 것을 권장합니다. Embarcadero 문서에서도 C++ 코드에서는OnCreate가 생성자와 상호작용할 수 있으므로 생성자를 override하는 방식을 권장합니다.__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { // 초기화 코드 }3. OnChange
예를 들어
TEdit의 글자가 변경될 때:void __fastcall TForm1::Edit1Change(TObject *Sender) { Label1->Caption = Edit1->Text; }사용자가
Edit1에 입력할 때마다OnChange가 발생합니다.4. 키보드 이벤트
void __fastcall TForm1::Edit1KeyDown( TObject *Sender, WORD &Key, TShiftState Shift) { if (Key == VK_RETURN) { ShowMessage("Enter 입력"); } }OnKeyDown,OnKeyUp,OnKeyPress는 각각 전달되는 인자와 용도가 조금씩 다릅니다.5. 이벤트의 기본 구조
C++Builder VCL 이벤트는 대체로 이런 형태입니다.
void __fastcall TForm1::이벤트이름( TObject *Sender) { // 이벤트가 발생했을 때 실행할 코드 }하지만 이벤트 종류에 따라 매개변수가 달라집니다.
예를 들어:
// OnClick void __fastcall TForm1::Button1Click(TObject *Sender) { }// OnMouseMove void __fastcall TForm1::FormMouseMove( TObject *Sender, TShiftState Shift, int X, int Y) { }// OnKeyDown void __fastcall TForm1::Edit1KeyDown( TObject *Sender, WORD &Key, TShiftState Shift) { }즉, 이벤트마다 정해진 함수 형식(signature)을 맞춰야 합니다.
원하시면 다음 단계로 `C++Builder VCL 이벤트 전체를 "이벤트 → 발생 조건 → 함수 형식 → 예제" 형태로 정리한 표도 만들어드릴 수 있습니다.
ChatGPT는 AI라 실수할 수 있습니다.
어떤 작업을 하고 계신가요?오늘은 무엇을 해볼까요?
ChatGPT는 AI입니다. 사용하면 이용 약관 및 개인정보 처리방침, 한국 부록에 동의하게 됩니다. 채팅은 검토될 수 있으며 AI 모델 개선에 사용될 수 있습니다. 자세히 알아보기OpenAI OpCo, LLC대표자: Sam Altman주소: 1455 3rd Street, San Francisco, CA 94158전화: 02-735-2109https://help.openai.com/ko-kr사업자등록번호: 816-80-03326통신판매업신고번호: 2026-공정-0022이용 약관호스팅 서비스 제공: Microsoft Azure사업자 추가 정보